package com.smart_campus.sys.service;

import com.smart_campus.sys.common.DataGridView;
import com.smart_campus.sys.common.ResultObj;
import com.smart_campus.sys.domain.User;
import com.smart_campus.sys.domain.UserInfo;
import com.smart_campus.sys.vo.UserANDRoleANDDeptVO;
import com.smart_campus.sys.vo.UserAndUserInfoVo;
import com.smart_campus.sys.vo.UserVo;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
*@Author:Omega
*@Date:2020/6/6 15:14
*/
public interface UserService{

        /**
         * 根据用户登录的登录名查询用户信息
         * @param loginname
         * @return
         */
    User querUserByLoginName(String loginname);

        /**
         * 判断手机号是否被注册
         * @param phone
         * @return
         */
        Boolean queryUserByPhone(String phone);

        /**
         * 添加用户
         * @param user
         */
    ResultObj insertUser(User user);

    ResultObj insertstaff(User user);


    /**
     * 添加用户 升级版
     * @param user
     * @param userInfo
     * @return
     */
    ResultObj insertUserAndINfo(User user,UserInfo userInfo);

    /**实名找回密码
     * @param username
     * @param loginname
     * @param password
     * @param identity
     * @return
     */
    ResultObj autonymRetrieve(String username,String loginname,String password,String identity);


    /**
     * 查询全部用户
     * @return List<User>
     */
    DataGridView selectUser(UserVo userVo);

    /**
     * 删除用户
     * @param id
     * @return int
     */
    void deleteUser(Integer id);

    /**
     * 删除对应id用户角色相关表的信息
     * @param uid
     * @return int
     */
    int deleteUserRole(Integer uid);

    /**
     * 添加对应id用户角色相关表的信息
     * @param uid
     * @param rid
     * @return int
     */
    int insertUserRole(Integer uid, Integer rid);

    /**
     * 修改用户的详细信息
     * @param userANDRoleANDDeptVO
     * @return int
     */
    void UserANDRoleANDDeptVOUPATE(UserANDRoleANDDeptVO userANDRoleANDDeptVO) throws ParseException;

    /**
     * 修改是否可用
     * @param id
     * @param available
     * @return int
     */
    int updateAvailable(Integer id, Integer available);

    /**
     *重置密码
     * @param id
     * @return int
     */
    int updateUserPwd(Integer id);


    /**
     * 查询当前用户的信息
     * @return DataGridView
     */
    DataGridView getCurrentUser();

    /**
     * 头像上传
     * @param userInfo
     * @return
     */
    int updateFilt(UserInfo userInfo);

    List<Map> queryAllUserForList();


    ResultObj phoneUpdatePassword(User user);

    DataGridView getUser(Integer id);

    /**绑定账号时查询全部信息
     * @return
     */
    UserAndUserInfoVo getUserPhoneIdentity();
}
